From: Florian Müllner Date: Mon, 22 Aug 2022 22:06:42 +0000 (+0200) Subject: status/bluetooth: Indicate progress on toggle X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~452^2^2~6 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=6a23e8ee0f4e859ac3aa0098c102d13946ac3732;p=gnome-shell.git status/bluetooth: Indicate progress on toggle Turning bluetooth on or off can be very slow ­– 10-15 seconds on my system – and we currently don't provide any feedback that something is indeed happening until the state changes at last. Address this by using the `acquiring` icon when the adapter is in a transitioning state. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5773 Part-of: --- diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 9580e7b4c..d4de597ad 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -178,14 +178,31 @@ class BluetoothToggle extends QuickToggle { this._client.bind_property('active', this, 'checked', GObject.BindingFlags.SYNC_CREATE); - this._client.bind_property_full('active', + this._client.bind_property_full('adapter-state', this, 'icon-name', GObject.BindingFlags.SYNC_CREATE, - (bind, source) => [true, source ? 'bluetooth-active-symbolic' : 'bluetooth-disabled-symbolic'], + (bind, source) => [true, this._getIconNameFromState(source)], null); this.connect('clicked', () => this._client.toggleActive()); } + + _getIconNameFromState(state) { + switch (state) { + case AdapterState.ON: + return 'bluetooth-active-symbolic'; + case AdapterState.OFF: + case AdapterState.ABSENT: + return 'bluetooth-disabled-symbolic'; + case AdapterState.TURNING_ON: + case AdapterState.TURNING_OFF: + return 'bluetooth-acquiring-symbolic'; + default: + console.warn(`Unexpected state ${ + GObject.enum_to_string(AdapterState, state)}`); + return ''; + } + } }); var Indicator = GObject.registerClass(